#!/usr/bin/env python

# $Id: cubeassistant.pyw 95 2008-08-24 19:25:59Z mhordecki $

version='beta'

#global imports
import pygtk
import gtk
import gtk.glade
import os.path
import sys
import glob
import locale
import gettext

import cubeass

#application imports
import timer
import backend
import mode
import stats
import helpers
import config
import signals
import session
from option import Option

import main


# locale

helpers.VER=helpers.REV=version

gettext.install('cubeassistant','misc/locale')
gtk.glade.bindtextdomain('cubeassistant','misc/locale')
gtk.glade.textdomain('cubeassistant')
gettext.bindtextdomain('cubeassistant','misc/locale')
gettext.textdomain('cubeassistant')

_ = gettext.gettext
sys.path.insert(0,'modules')

Option().scorelast=0
Option().loglast=0
#Config

#Initing modules
timer.init()
mode.init()

#More options

#Mode generation
Option().config=config.Config()
Option().modes=Option().config.get('general.modes',['3x3x3'])
if not type(Option().modes) == type([]):
	Option().modes = [Option().modes]

## STATS INIT
stats.init()

#Main loop

Option().windowMain = main.MainWindow()
cubeass.init(Option().windowMain.window)

Option().session=session.Session()
Option().mode=mode.Mode(Option().config.get('general.default_mode','3x3x3'))

Option().windowMain.recreateModeMenu(Option().mode.options().name)

Option().windowMain.window.present()



modules=[]
Option().modules={}
for mod in glob.iglob('modules/mod_*.py'):
	modname=os.path.splitext(os.path.basename(mod))[0]
	exec('import '+modname)
	exec(modname+'.init()')
	Option().modules[modname]=eval(modname+'.info()')
	modules.append(modname)

helpers.log(_('Launching Cube Assistant')+' '+helpers.VER)
backend.prepare()
Option().windowMain.refresh()
gtk.main()

for mod in modules:
	exec(mod+'.teardown()')

Option().session.teardown()
Option().mode.teardown()
stats.teardown()

Option().config.set('general.modes',Option().modes)
Option().config.save()

